package com.abc.recycling.service;

import com.abc.recycling.domain.SysLog;
import java.time.LocalDateTime;
import java.util.List;

public interface SysLogService {
    
    /**
     * 记录日志
     * @param log 日志信息
     * @return 日志ID
     */
    Long recordLog(SysLog log);
    
    /**
     * 获取日志详情
     * @param id 日志ID
     * @return 日志信息
     */
    SysLog getLog(Long id);
    
    /**
     * 搜索日志
     * @param title 日志标题
     * @param type 日志类型
     * @param username 操作用户
     * @param status 操作状态
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return 日志列表
     */
    List<SysLog> searchLogs(String title, String type, String username, Integer status, 
                           LocalDateTime startTime, LocalDateTime endTime);
    
    /**
     * 清空指定日期之前的日志
     * @param time 指定时间
     * @return 清空的日志数量
     */
    int cleanLogsBefore(LocalDateTime time);
    
    /**
     * 批量删除日志
     * @param ids 日志ID列表
     * @return 删除的日志数量
     */
    int deleteLogs(List<Long> ids);
    
    /**
     * 统计日志数量
     * @param type 日志类型
     * @param status 操作状态
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return 日志数量
     */
    int countLogs(String type, Integer status, LocalDateTime startTime, LocalDateTime endTime);
    
    /**
     * 记录登录日志
     * @param username 用户名
     * @param status 登录状态
     * @param message 消息
     */
    void recordLoginLog(String username, Integer status, String message);
    
    /**
     * 记录操作日志
     * @param title 操作标题
     * @param username 操作用户
     * @param status 操作状态
     * @param message 消息
     */
    void recordOperateLog(String title, String username, Integer status, String message);
    
    /**
     * 记录异常日志
     * @param title 异常标题
     * @param username 操作用户
     * @param errorMsg 错误信息
     */
    void recordErrorLog(String title, String username, String errorMsg);
} 